// import axios from "axios";
// import { ElMessage } from "element-plus";
// export function request(config) {
//     const instance = axios.create({
//         baseURL: 'https://recruit.aicase.xyz',
//         timeout: 5000
//     });
//     //请求拦截器
//     instance.interceptors.request.use(config => {
//         // 在发送请求之前做些什么
//         const token = localStorage.getItem('Authorization')
//         //不需要header参数的
//         const withUrl = ['/api/boss/login']
//         //进行判断
//         if (token && !withUrl.includes(config.url)) {
//             config.headers['Authorization'] = token
//         }
//         return config;
//     }, function (error) {
//         // 对请求错误做些什么
//         return Promise.reject(error);
//     });
//
//     //响应拦截器
//     instance.interceptors.response.use(response => {
//         // 对接口异常的数据，给用户提示
//         if (response.data.code === 500) {
//             ElMessage.warning(response.data.message)
//         }
//         //token过期失效或错误清除token
//         if (response.data.code === 401) {
//             localStorage.removeItem('Authorization')
//             window.location.href = window.location.origin
//         }
//         // console.log(response);
//         return response;
//     }, error => {
//         return Promise.reject(error);
//     });
//     return instance(config);
// }
import axios from "axios";
import { ElMessage } from "element-plus";
import router from "@/router"; // 确保导入路由实例

// 不需要 Token 的白名单路径
const WHITE_LIST = ['/api/boss/login'];

export function request(config) {
    const instance = axios.create({
        baseURL: 'https://recruit.aicase.xyz',
        timeout: 5000
    });

    // 请求拦截器
    instance.interceptors.request.use(
        config => {
            const token = localStorage.getItem('Authorization');
            // 白名单校验且 Token 存在时添加 Header
            if (token && !WHITE_LIST.some(path => config.url.includes(path))) {
                config.headers.Authorization = `Bearer ${token}`; // 规范格式
            }
            return config;
        },
        error => {
            return Promise.reject(error);
        }
    );

    // 响应拦截器
    instance.interceptors.response.use(
        response => {
            const { data, status } = response;
            // 业务逻辑错误处理 (根据后端约定调整)
            if (data.code !== 200) {
                ElMessage.warning(data.message || '操作失败');
                // Token 失效处理
                if (data.code === 401) {
                    handleTokenExpired();
                }
                return Promise.reject(data); // 阻止进入 then()
            }
            return data; // 直接返回有效数据
        },
        error => {
            // 网络错误 & HTTP 状态码错误处理
            if (error.response) {
                const { status, data } = error.response;
                // HTTP 401 处理
                if (status === 401) {
                    handleTokenExpired();
                }
                ElMessage.error(data?.message || `请求失败，错误码：${status}`);
            } else {
                ElMessage.error('网络异常，请检查连接');
            }
            return Promise.reject(error);
        }
    );

    return instance(config);
}

// Token 过期统一处理
function handleTokenExpired() {
    localStorage.removeItem('Authorization');
    router.replace('/login'); // 无刷新跳转登录页
    ElMessage.warning('登录已过期，请重新登录');
}